//
//  ChainList.h
//  DataStruct
//
//  Created by vase on 2022/2/25.
//

#ifndef ChainList_h
#define ChainList_h

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//错误的定义
//#define LinkedList_Error -1
//极大值的定义
#define INT_MAX 0x7fffffff
//数据类型定义
#define ElementType int
/** 链表节点*/
typedef struct LinkedListNode {
    ElementType data; //数据本身
    struct LinkedListNode *next; //后继节点指针
} ListNode;

/** 初始化一个带头指针的链表*/
ListNode* initLinkedList(void);

/** 头插法添加元素*/
void addInHead(ListNode *head, int value);

/** 尾插法添加元素*/
void addInTail(ListNode *head, int value);

/** 递归删除指定数值的元素*/
void recursionDelX(ListNode *head, ListNode *pre, int value);

/** 删除最小值*/
void removeMinList(ListNode *head);

/** 单链表就地逆置*/
void reverseOnSite(ListNode *now, ListNode *head);

/** 单链表排序*/
void sortList(ListNode *head);

/** 打印链表元素*/
void showList(ListNode *head);

/** 反向输出链表元素*/
void reserveShowList(ListNode *head);

#endif /* ChainList_h */
